﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CamadasDados.Prestador;
using Util.Criptografia.MD5;
using CamadasDados.UF;
using CamadasDados.Cidade;

namespace Worcamento.Prestador.Editar
{
    public partial class editarPrestador : System.Web.UI.Page
    {

        private readonly csUf _uf = new csUf();
        private readonly csCidade _cidade = new csCidade();
        private string strCpf = "";
        private string strCnpj = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarDdl();
                if (Request.QueryString["CO_PRESTADOR"] != null)
                {
                    var objCriptografia = new criptografiaMD5();
                    hdfCoPrestador.Value = Request.QueryString["CO_PRESTADOR"].ToString();
                    preencherTela();
                }else
                {
                    lkbEditar.Visible = false;
                }

            }
        }

        protected void carregarDdl()
        {
            ddlUf.DataSource = _uf.pegarUfs();
            ddlUf.DataBind();
            ddlUf.Items.Insert(0, "Selecione");

            ddlCidade.DataSource = _cidade.pegarCidades();
            ddlCidade.DataBind();
            ddlCidade.Items.Insert(0, "Selecione");
        }

        protected void preencherTela()
        {
            var metPrestador = new csPrestador();
            var objPrestador = metPrestador.pegarPrestadorPorCodigo(Convert.ToInt32(hdfCoPrestador.Value));
            var objUf = _uf.pegarUfPorCoCidade(objPrestador.CO_CIDADE);

            //Preenchendo Formulário
            txtNoFantasia.Text = objPrestador.NO_FANTASIA;
            ddlUf.SelectedValue = objUf.CO_UF.ToString();
            ddlCidade.SelectedValue = objPrestador.CO_CIDADE.ToString();
            ddlCidade.Enabled = true;

            if(objPrestador.NR_CPF != null)
            {
                ddlCfpCnpj.SelectedValue = "1";
                txtCpfCnpj.Text = objPrestador.NR_CPF;
                mask_txtCpfCnpj.Mask = "999,999,999-99";
                txtCpfCnpj.Width = 90;
            }else
            {
                ddlCfpCnpj.SelectedValue = "2";
                txtCpfCnpj.Text = objPrestador.NR_CNPJ;
                mask_txtCpfCnpj.Mask = "99,999,999/9999-99";
                txtCpfCnpj.Width = 118;
            }

            ddlStatus.SelectedValue = objPrestador.NR_STATUS.ToString();
            txtEmailContato.Text = objPrestador.DS_EMAIL_CONTATO;
            txtEmailResponsavel.Text = objPrestador.DS_EMAIL_RESP;
            txtTelContato.Text = objPrestador.DS_TEL_CONTATO;
            txtTelResponsavel.Text = objPrestador.DS_TEL_RESP;

            lblDtInclusao.Text = objPrestador.DT_INCLUSAO.ToShortDateString();
            lblDtAlteracao.Text = objPrestador.DT_ALTERACAO != null ? objPrestador.DT_ALTERACAO.Value.ToShortDateString() : " - ";
        }

        protected void ddlUf_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(ddlUf.SelectedValue != "Selecione")
            {
                ddlCidade.DataSource = _cidade.pegarCidadesPorCoUf(Convert.ToInt32(ddlUf.SelectedValue.ToString()));
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, "Selecione");
                ddlCidade.Enabled = true;
            }else
            {
                ddlCidade.DataSource = "";
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, "Selecione");
                ddlCidade.Enabled = false;
            }
        }

        protected void ddlCfpCnpj_SelectedIndexChanged (object sender, EventArgs e)
        {
            if (ddlCfpCnpj.SelectedValue == "1")
            {
                strCpf = txtCpfCnpj.Text;
                mask_txtCpfCnpj.Mask = "999,999,999-99";
                txtCpfCnpj.Text = string.IsNullOrEmpty(strCnpj) ? "" : strCnpj;
                txtCpfCnpj.Width = 90;
            }
            if (ddlCfpCnpj.SelectedValue == "2")
            {
                strCnpj = txtCpfCnpj.Text;
                mask_txtCpfCnpj.Mask = "99,999,999/9999-99";
                txtCpfCnpj.Text = string.IsNullOrEmpty(strCpf) ? "" : strCnpj;
                txtCpfCnpj.Width = 118;
            }
        }

        protected void lkbEditar_Click(object sender, EventArgs e)
        {
            var csPrestador = new csPrestador();

            if (validarForm())
            {
                var objPrestador = new CamadasDados.TB_PRESTADOR();
                var coPrestador = Convert.ToInt32(hdfCoPrestador.Value);
                objPrestador.NO_FANTASIA = txtNoFantasia.Text;
                objPrestador.CO_CIDADE = Convert.ToInt32(ddlCidade.SelectedValue);
                if(ddlCfpCnpj.SelectedItem.ToString() == "1")
                {
                    objPrestador.NR_CPF = txtCpfCnpj.Text;
                }else
                {
                    objPrestador.NR_CNPJ = txtCpfCnpj.Text;
                }
                objPrestador.DS_TEL_CONTATO = txtTelContato.Text;
                objPrestador.DS_TEL_RESP = txtTelResponsavel.Text;
                objPrestador.DS_EMAIL_CONTATO = txtEmailContato.Text;
                objPrestador.DS_EMAIL_RESP = txtEmailResponsavel.Text;
                objPrestador.DT_ALTERACAO = DateTime.Now;
                objPrestador.NR_STATUS = Convert.ToInt32(ddlStatus.SelectedValue);

                csPrestador.alterar(objPrestador, coPrestador);
            }



        }

        protected bool validarForm()
        {
            bool boValidador = true;

            if(string.IsNullOrEmpty(txtNoFantasia.Text))
            {
                boValidador = false;
                lblNoFantasiaObrigatorio.Text = "O campo [Nome Fantasia] é obrigatório!";
            }else
            {
                lblNoFantasiaObrigatorio.Text = "";
            }

            if (ddlUf.SelectedValue == "Selecione")
            {
                boValidador = false;
                lblCoUfObrigatorio.Text = "O campo [UF] é obrigatório!";
            }
            else
            {
                lblCoUfObrigatorio.Text = "";
            }

            if (ddlCidade.SelectedValue == "Selecione")
            {
                boValidador = false;
                lblCoCidadeObrigatorio.Text = "O campo [Cidade] é obrigatório!";
            }
            else
            {
                lblCoCidadeObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtCpfCnpj.Text) && (txtCpfCnpj.Text == "___.___.___-__") || (txtCpfCnpj.Text == "__.___.___/____-__"))
            {
                boValidador = false;
                lblNrCfpCnpjObrigatorio.Text = "É obrigatório o preenchimento do CPF ou CNPJ!";
            }
            else
            {
                lblNrCfpCnpjObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtEmailContato.Text))
            {
                boValidador = false;
                lblDsEmailContatoObrigatorio.Text = "O campo [Email Contato] é obrigatório!";
            }
            else
            {
                lblDsEmailContatoObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtEmailResponsavel.Text))
            {
                boValidador = false;
                lblDsEmailRespObrigatorio.Text = "O campo [Email Responsável] é obrigatório!";
            }
            else
            {
                lblDsEmailRespObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtTelContato.Text) && txtTelContato.Text == "(__)____-____")
            {
                boValidador = false;
                lblDsTelContato.Text = "O campo [Tel. Contato] é obrigatório!";
            }
            else
            {
                lblDsTelContato.Text = "";
            }

            if (string.IsNullOrEmpty(txtTelResponsavel.Text) && txtTelResponsavel.Text == "(__)____-____")
            {
                boValidador = false;
                lblDsTelResp.Text = "O campo [Tel. Responsável] é obrigatório!";
            }
            else
            {
                lblDsTelResp.Text = "";
            }

            return boValidador;
        }

        protected void lnkNovaPesquisa_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Prestador/Form/formPrestador.aspx");
        }

        protected void lnk_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Prestador/Form/formPrestador.aspx");
        }
    }

}